package com.ld.security.common.mybatis.base.mapping;

import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ld.security.common.mybatis.base.vo.SchemaVo;
import com.ld.security.common.mybatis.wrapper.SqlWrapper;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;

import java.util.List;
import java.util.Map;


public interface SqlMapping {

    @DS("#0")
    @Select("SELECT DATABASE() AS schemaName")
    SchemaVo getNowSchemaName(String dataSourceId);


    /**
     * 分页查询
     * @param page
     * @param wrapper
     * @return
     */
    @DS("#1.dataSource")
    @Select("${sw.sql}")
    IPage<Map> page(Page page,  @Param(SqlWrapper.name) SqlWrapper wrapper);

    /**
     * 查询所有
     * @param wrapper
     * @return
     */
    @DS("#0.dataSource")
    @Select("${sw.sql}")
    List<Map> all(@Param(SqlWrapper.name) SqlWrapper wrapper);

    /**
     * 更新
     * @param wrapper
     * @return
     */
    @DS("#0.dataSource")
    @Update("${sw.sql}")
    int update(@Param(SqlWrapper.name) SqlWrapper wrapper);

    /**
     * 删除
     * @param wrapper
     * @return
     */
    @DS("#0.dataSource")
    @Delete("${sw.sql}")
    int delete(@Param(SqlWrapper.name) SqlWrapper wrapper);
}
